hvm vpic: Fix IRQ priority calculation in 8259 device model.
authorkfraser@localhost.localdomain <kfraser@localhost.localdomain>
Fri, 16 Mar 2007 16:19:35 +0000 (16:19 +0000)
committerkfraser@localhost.localdomain <kfraser@localhost.localdomain>
Fri, 16 Mar 2007 16:19:35 +0000 (16:19 +0000)
The priority shift should be a right-rotation, not a left-rotation.

From: Trolle Selander <trolle.selander@gmail.com>
Signed-off-by: Keir Fraser <keir@xensource.com>
xen/arch/x86/hvm/vpic.c

index 3a5b2a16a8651a3d7821e69e0ff36fad0c22208f..5dfe1e4a6b9a22d539f9458194162dcf44946b60 100644 (file)
@@ -54,8 +54,8 @@ static int vpic_get_priority(struct hvm_hw_vpic *vpic, uint8_t mask)
     if ( mask == 0 )
         return VPIC_PRIO_NONE;
 
-    /* prio = ffs(mask ROL vpic->priority_add); */
-    asm ( "rol %%cl,%b1 ; bsf %1,%0"
+    /* prio = ffs(mask ROR vpic->priority_add); */
+    asm ( "ror %%cl,%b1 ; bsf %1,%0"
           : "=r" (prio) : "r" ((uint32_t)mask), "c" (vpic->priority_add) );
     return prio;
 }